package leetcode_300;

import java.util.ArrayList;
import java.util.List;

import helpclass.TreeNode;

/**
 *@author 周杨
 *BinaryTreePaths_257 返回二叉树所有根节点到叶子节点的路径
 *describe:用递归 AC 21%
 *2018年6月26日 上午9:40:27
 */
public class BinaryTreePaths_257 {
	List<String> res;
	public List<String> binaryTreePaths(TreeNode root) {
        res=new ArrayList<String>();
        if(root==null)
        	return res;
        help(root,new ArrayList<Integer>());
        return res;
    }
	
	public void help(TreeNode root,List<Integer> list) {
		list.add(root.val);
		if(root.left==null&&root.right==null) {
			in(list);
		}
		if(root.left!=null)
			help(root.left,list);
		if(root.right!=null)
			help(root.right,list);
		list.remove(list.size()-1);
	}
	
	public void in(List<Integer> list) {
		StringBuilder sb=new StringBuilder();
		for(int i:list) {
			sb.append(i).append("->");
		}
		sb.delete(sb.length()-2,sb.length());
		this.res.add(sb.toString());
	}
}
